package rubix.data
{
	import com.adobe.scenegraph.MaterialStandard;

	public class Sides
	{
		// данные про грани кубика - метка (первая буква цвета), положение на кубе и цвет в uint
		private static const DATA:Array=[
			{label:"Y",orientation:[0,1,0],color:0xffff00},
			{label:"W",orientation:[0,-1,0],color:0xffffff},
			{label:"O",orientation:[1,0,0],color:0xff5500},
			{label:"R",orientation:[-1,0,0],color:0xff0000},
			{label:"G",orientation:[0,0,1],color:0x00ff00},
			{label:"B",orientation:[0,0,-1],color:0x0000ff}
		];
		private static var _inited:Boolean=false;
		
		public static function get data():Array{
			init();
			return DATA;
		}
		public static function init():void{
			if(!_inited){
				_inited=true;
				// Создаем материалы для граней
				for each(var side:Object in DATA){
					side.material=createMaterial(side.color);
				}
			}
		}
		public static function getMaterialByOrientation(orientation:Array):MaterialStandard{
			var material:MaterialStandard;
			// Для определения нужного материала грани, найдем в SIDES грань с нужным положением
			for each(var side:Object in DATA){
				if(side.orientation.every(function(item:*,ind:int,...rest):Boolean{return item==orientation[ind];})){
					material=side.material;
					break;
				}
			}
			return material;
		}
		
		// Вспомагательный метод для создания материалов
		// color - цвет материала
		private static function createMaterial(color:uint=0x333333):MaterialStandard{
			var m:MaterialStandard =new MaterialStandard();
			m.specularColor.setFromUInt(0x999999);
			m.diffuseColor.setFromUInt(color);
			return m;
		}
	}
}